let
으로 한다.mut
을 변수명 앞에 붙여서 가변형 변수로 선언한다.let x = 5;
x = 10; // 에러
let mut y = 5;
y = 10; //OK
🤔 JavaScript의 let
과 반대. 기본적으로 const
와 비슷하다.
println!("Number {}", x);
// i8, u8, i16, u16, i32, u32, i64, u64,
// isize, usize 아키텍쳐에따라 크기다름 (x64, x86)
// f32, f64
// bool
let x: i32 = 1;
// char single quote ASCII
let c: char = 'z';
// tuple
let t: (i32, f64, char) = (42, 6.12, 'j');
fn main() {
// i18, i16, i64, i128 and isize (32비트/64비트 구조에 따라)
// u8, u16, u64, u128 and usize
let my_number = 100; // 숫자는 타입 명시 하지 않으면 i32
let your_number: u8 = 50;
// 아래는 type inference발생해서 pass,
// 만약 정수라도 형이 다르면(예 u8, u16끼리 연산) type error
let result = my_number + your_number;
}
fn main() {
println!("문자열은 항상 큰 따옴표");
// 다음은 모두 char
let letter = 'A' // 글자는 작은 따옴표
let space = ' ';
let other_language = 'ㅇ'; // char는 unicode지원을 위해 4바이트형 (u32)
let emoji = '👍';
// 간단한 형에 대해 casting가능
let a: u16 = 8; // i32
let b: u8 = 10;
let res = a + b as u16;
// ASCII 형도 변환 가능
let c = 'a' as u8; // 97
// char 크기
println!("Size of a char: {}", std::mem::size_of::<char>()); // 4B
// 문자열 len()는 길이를 반환하는게 아니고 필요한 byte 수.
// 한자 3B, 이집트 4B
// 그럼 어떻게 길이를?
println!("Size of a string with a: {}", "a".len()); // 1
println!("Size of a string with a: {}", "아".len()); // 3
// "asdf".chars().count() 이렇게 해야 길이
}
fn main() {
// f32 f64
let my_number = 9_u8; // 이런식으로 표시할 수도 있다.
let big_num = 1_000_000_000u64; // 보기 편하게
let fl = 9.0; // 거의 f64를 씀
}
let number = "THREE";
let number = 3; // 다시 선언하여 Type을 변경할 수 있다.
const NUMBER: i32 = 3; // 항상 immutable하고 type이 있어야함
#define
과 비슷)let ref == &